Monday, February 23, 2026

UNIT 1 MN–2C (Th):- SOFTWARE TESTING (UNIT NAME:- INTRODUCTION TO SOFTWARE TESTING)

 




DR. AJAY KUMAR PATHAK 

ASSISTANT PROFESSOR

READ  ALL THE NOTES CHAPTER WISE  

MINOR PAPER 

SUBJECT NAME:- MN–2C (Th):- SOFTWARE TESTING  

 FOR B. Sc. IT. 

 SEM 6 F.Y.U.G.P. 

UNIT 1 (UNIT NAME) :-  INTRODUCTION TO SOFTWARE TESTING 

LEARN NOTES FROM HERE
PREPARED BY DR. AJAY KUMAR PATHAK 
                                ©Copyrights 
MN–2C (Th):-
SOFTWARE TESTING    

Copyright © by Dr. Ajay kumar pathak

B. Sc. IT. SEMESTER 6 NOTES BASED ON NEP

SUBJECT : MN–2C (Th): SOFTWARE TESTING   

(To be selected by the students from)


UNIT 1 (UNIT NAME):-  INTRODUCTION TO SOFTWARE TESTING

 Semester Examination and Distribution of Marks

Semester internal examination (SIE):- 25 Marks

End Semester Examination (ESE) :-  75 Marks


Objective: The objective of this course is to provide students with an understanding of software testing principles, techniques, and methodologies. The course aims to develop students' skills in designing test cases, executing tests, and reporting defects.

 

Course Outcome: By the end of this course, students should be able to:

·         Understand the importance of software testing in the software development life cycle.

·         Apply different testing techniques and methodologies.

·         Design and execute test cases to verify software functionality.

·         Identify and report software defects effectively.

·         Understand the role of automated testing tools in software testing.







-:        NOTES READ FROM HERE           :-

  

UNIT- 1    :- INTRODUCTION TO SOFTWARE TESTING

SOFTWARE:-  

A software is a fundamental term in the computer world that refers to a program or set of programs designed to perform specific tasks on a computer. In simple terms, software encompasses the programs, rules, and instructions that allow a computer to perform various functions. When we talk about software, we refer to something intangible that is in our computers, such as Microsoft Word, the operating system calculator or the digital calendar that we use to schedule meetings. 

The software works using a programming language known as Binary code, represented by zeros and ones. This code allows programmers to instruct the computer what actions to perform, how and when to execute them.

Who Develops Software?:-

Software developers, also called programmers or coders, are the architects and builders of software. They write code in various programming languages like Python, Java, C++, or JavaScript. It creates software that solves real-world problems or adds value to users.

 

INTRODUCTION TO SOFTWARE TESTING:-

Software testing is an integral part of the software development process designed to ensure that every product feature is dependable and high-quality. Teams that conduct software testing do it in such a way that it provides comprehensive info about errors in the architecture, sees that it meets the stated product requirements, and performs as intended. This article will consider the concepts and terminologies commonly associated with software testing.

Testing software is crucial in the software development process. It ensures that the software meets quality standards, functions correctly and remains secure before it is released to users. Testing plays a role in the development cycle by detecting issues, which helps in resolving them efficiently, saving time and money while improving the products’ dependability.

 

What is the purpose of Software testing?:-

Software testing is done by the developers / product teams to detect and rectify errors or faults early in the software development process. The early detection significantly minimises the risks of issues arising in the finished product. Defects arise in software due to many reasons. As a matter of fact it is said that every software application has some defects embedded in it but not every defect is a threat to the system. There is a lot that can be accomplished with the help of software testing. Testing helps in evaluating the quality of software.

There are many reasons why software testing has gained so much of importance in the field of information technology. Firstly, testing helps in reducing the overall cost of the software development project. If testing is ignored in the initial development stages to save a small amount of money then it may turn out to be a very expensive matter later because as you move on with development process it becomes more and more difficult to trace back defects and rectifying one defect somewhere can introduce another defect in some other module.

The requirement is finalized after several discussions with the client. Testing ensures that the software behaves and looks exactly like what is mentioned in the requirements specification document, so that when software is delivered to the client there are no arguments about the variation from the original requirements. Software testing helps in strengthening the market reputation of a company. Well tested software is of good quality and good quality means better feedback and reviews.

In order to achieve best results it is important to organize all your testing efforts and this is what this Software Testing Training provided by International Software Test Institute is all about. Software testing cannot be fruitful without proper planning. To live up to the expectations of the client it is important to plan every step carefully. A lot of things need to be considered in order plan your testing efforts. Software testing should be planned keeping budget, schedule and performance in mind in order to achieve best results.

All testing activities require planning. It is important to outline a test plan that will give in details about how each activity will be carried out. Test plan is also required to ensure that all aspects of the software are covered thoroughly and there is no repetition of testing process so that time and effort is not wasted.

The latest trend now is to involve the testing team in specification writing process. It is important that the testing team understands the requirements of the client clearly as the entire development is based on the requirement defined by the client. Anything that is not in line with the requirement is a defect. So, the testing team should have a clear idea about what the final outcome of running software should be like. As a matter of fact it is important to start writing test cases in parallel to specification writing. This will help the testers analyze whether all the requirements are testable or not.


FUNDAMENTALS OF SOFTWARE TESTING :-

Fundamentals of Software Testing refer to the basic concepts, principles, objectives, processes, and techniques that are used to ensure that a software system works correctly and meets the specified requirements. Software testing is a systematic process of evaluating a software application to identify differences between expected and actual results and to detect defects, errors, or missing requirements. It is an essential part of the Software Development Life Cycle (SDLC) because without proper testing, software may fail after deployment, leading to financial loss, security risks, or damage to reputation.

Software testing is not just about finding bugs; it is about ensuring quality. Quality means the software should be reliable, efficient, secure, easy to use, and maintainable. When a developer writes a program, there is always a possibility of mistakes. These mistakes are called errors. When an error exists in code, it becomes a defect (bug). When the defect affects the system during execution, it results in a failure. Testing helps in identifying these defects before the software reaches the user.

 

TYPES OF SOFTWARE TESTING:-

There are different types of software testing, each serving a unique process for quality assurance.

(1)      Functional Testing

(2)      Non-Functional Testing

 

(1)      Functional Testing:- Functional testing is the most common type of software testing. During this testing, testers prepare various test cases to simulate user interactions and evaluate the software’s functionality in response to these interactions.

Functional testing focuses on verifying the functionality of the software system. It is a type of testing that is done to ensure that the system works as intended and meets the functional requirements specified by the stakeholders. Functional testing is concerned with what the software system does, and how it performs its functions.

The Functional Testing are:-

(1)      Unit Testing or module testing:-

(2)      Integration Testing

(3)      System Testing

(4)      Acceptance Testing



(1)      UNIT TESTING OR MODULE TESTING:-  Unit testing is a software testing method that focuses on individual units or modules of the software to determine whether they work correctly. A unit is the smallest testable part of any software and usually has one or a few inputs and a single output. In procedural programming, a unit may be an individual procedure or function.

Unit testing is a fundamental practice in software engineering and is the first level of software testing, conducted before integration testing. The process involves writing code to test the functionality and behavior of the software components and then running those tests to ensure every aspect of the software behaves as expected.

Unit testing is a critical part of the software development process. It helps to validate the quality of your code.

Unit test example:- Here is an example of a very basic method in Python and some test cases with corresponding unit test code.

Python method

def add_two_numbers(x, y):

    return x + y

NAMES OF POPULAR UNIT TESTING TOOLS USED IN DIFFERENT PROGRAMMING LANGUAGES:-

(1)      For Java:- JUnit, TestNG, Mockito

(2)      For Python:- unittest, pytest, nose2

(3)      For C and C++:- CppUnit, Google Test, Unity

(4)      For .NET:- NUnit, xUnit.net, MSTest

(5)      For JavaScript:- Jest, Mocha, Jasmine

(6)      For PHP:-PHPUnit

 

 

Unit testing strategies:-

(1)      Logic checks:- Does the system perform the right calculations and follow the right path through the code given a correct, expected input? Are all paths through the code covered by the given inputs?

(2)      Boundary checks:- For the given inputs, how does the system respond? How does it respond to typical inputs, edge cases, or invalid inputs?

(3)      Error handling:- When there are errors in inputs, how does the system respond? Is the user prompted for another input? Does the software crash?

(4)      Object-oriented checks:- If the state of any persistent objects is changed by running the code, is the object updated correctly?

 

Unit testing advantages:-

(1)      Early bug detection:- Unit testing allows developers to catch and correct bugs at an early stage in the development process. As tests are run on individual units, it becomes easier to identify the exact location of a defect. This early bug detection not only saves time but also reduces the cost associated with fixing bugs later in the development cycle.

(2)      Improved code quality:- Unit testing significantly improves the quality of the code. The process of writing tests forces developers to think through their code and its expected behavior, leading to a better understanding of the problem they’re trying to solve and consequently, better code. Additionally, with tests in place, developers can refactor their code confidently, knowing that they’ll quickly catch any introduced bugs.

(3)      Easier refactoring:- Refactoring, or restructuring existing code without changing its external behavior, is made easier with unit testing. Tests provide a safety net that enables developers to confidently change the structure of the code. If a refactor breaks something, the tests will catch it, allowing the developer to fix the issue immediately.

(4)      Better collaboration:- Unit tests serve as a form of documentation, providing a clear understanding of the code’s functionality to other developers. This clarity fosters better collaboration among team members, as they can confidently work on or modify the code without fear of breaking existing functionality.

 

Unit testing challenges :-

(1)      Initial overhead:- Writing good unit tests requires time and effort, which may seem like a hurdle, especially when project deadlines are tight. However, the investment in unit testing can save considerable time in the long run by catching bugs early and facilitating easier code maintenance.

(2)      Maintaining tests:- As software evolves, so must its tests. Maintaining test cases can be a challenge, especially in large projects with many developers. If tests are not updated when the code is changed, they may fail and give false-negative results, or worse, they may pass and give false-positive results. A culture of updating tests as part of the code change process is crucial to overcome this challenge.

 

(2)      INTEGRATION TESTING:-            Integration testing is a software-testing approach in which various application components or modules are joined and tested to evaluate how well they work together. Integration testing seeks to help ensure that these assembled parts can communicate with each other and interact successfully.

Integration testing refers to the process in which the interface of different applications, modules or components of a software application are tested as a combined group. Integration testing is the second level of the software testing process. And takes place right after unit testing and just before system testing. Simply put, integration testing shows the testing team how well disparate elements work together.

Its primary goal is to ensure:-

(1)      Correct data flow

(2)      Proper communication

(3)      Expected system behavior when components are connected

 

NAMES OF POPULAR INTEGRATION TESTING TOOLS USED IN DIFFERENT TECHNOLOGIES:-

(1)      For Java:- TestNG, JUnit, Arquillian

(2)      For API / Web Services Integration:- Postman, SoapUI, REST Assured, Karate

(3)      For JavaScript / Node.js:- Jest, Mocha, Cypress

(4)      For .NET:- NUnit, xUnit.net

 

Types of Integration Testing:-

(1)      Big-Bang Integration Testing:- All modules are integrated after unit testing is completed, and the entire system is tested at once. Big-Bang Integration Testing combines all modules at once after individual module testing. This method is straightforward but can be challenging for large systems due to the complexity of isolating errors.

(2)      Bottom-Up Integration Testing:- It starts with integrating and testing lower-level modules before moving to higher-level modules. It often uses test drivers to simulate higher-level modules.

(3)      Top-Down Integration Testing:- Begins with high-level modules and progressively integrates and tests lower-level modules. It typically requires the use of stubs to simulate the functionality of lower-level modules.

(4)      Mixed Integration Testing (Sandwich Approach):- Mixed Integration Testing, or the Sandwich Approach, combines top-down and bottom-up methods. It's particularly useful for large projects with multiple layers.

(5)      Incremental Integration Testing:- Incremental Integration Testing involves integrating and testing modules step by step rather than all at once. This approach helps in isolating and fixing errors more efficiently.

 

Advantages of Integration Testing:-

(1)      Ensures the correctness of the interface:- Integration testing helps find issues at the interface level.

(2)      Improves overall system quality:- When checks at the interface levels are passed, the quality of the whole system is improved.

(3)      Enhances CI process:- It is often part of Continuous Integration. The overall quality of the CI process is improved with the addition of integration testing.

(4)      Prevents regression issues:- Incremental integration testing helps avoid regression issues by finding bugs. 

(5)      Improves user experience (UX):- Sometimes, individual components have good UX. However, when combined with other components, the user experience can be confusing, unintuitive, and frustrating. Integration testing ensures that the UX is smooth and clear for the user. 

Challenges of Integration Testing:-

(1)      Complex components:- Systems often have many large and small interdependent components, which makes it difficult to isolate and test individual integrations.

(2)      Data management:- In large systems, ensuring that data is correctly passed between units and accurately reflects real-world scenarios is challenging.

(3)      Environment setup:- It can be difficult to set up an environment that integrates all the units and imitators production.

(4)      Scalability testing: Testing how integrated components perform under varying loads and scalability conditions can be difficult.

(5)      Defect debugging: When many smaller components come together, it can be difficult to pinpoint the exact reason for a code bug.



(3)      SYSTEM TESTING:- System testing is a crucial phase in software testing that evaluates the complete, integrated software application to ensure it meets all specified requirements. It takes place after integration testing and involves testing the entire system as a whole to confirm that all components work together seamlessly. This testing phase verifies functional and non-functional requirements, including performance, usability, and security.

The System testing of software or hardware conducted on an entire, integrated system to assess the system's compliance with its specified requirements. It carried out by testers. This testing also examines both functional and nonfunctional requirements of the testing. It is the process of testing an integrated system to verify that it meets specified requirements. It is the level of software testing performed before Acceptance Testing and after Integration Testing. It comes under Black Box testing, i.e., only external working features of the software evaluated during this testing. It doesn't require any internal knowledge of the coding, programming, design, etc., and completely based on users-perspective.

 

System testing process:-

Step 1: Test Environment Setup:- The first step of the system testing process is to create a testing environment that closely mimics (copy) the actual production environment. In this step, you configure everything, including hardware and software, to set the tone for accurate results.

Step 2: Test Case Creation :- Once the testing environment is ready, you should then proceed to develop test cases     (a test case is a detailed, documented set of conditions, inputs, and step-by-step actions used to verify whether a specific feature or part of a software application functions correctly according to its requirements ).

      These are different scenarios under which the system will be tested and cover all functionalities. For instance, suppose you are testing an e-commerce application; the case test may be to check if the Add to Cart functionality works smoothly. The test case will detail the steps to add an item to the cart, the expected system behavior during this, and the result.

Step 3: Test Data Generation:- Relevant test data is created or selected alongside test cases. It covers real-world situations as well as valid and invalid data to test the system in detail. Continuing with the e-commerce application example, test data can include valid user accounts and payment details. Invalid data you can feed into the system are wrong payment details or non-existent product IDs.

Step 4: Test Case Execution:- Now that the test cases and testing data are in place, the final testing starts. Systematic tests are run either manually or using different tools to check if the actual results match the expected results or if there are any discrepancies. For instance, the tester executes the test case for adding an item to the cart. They perform the steps as outlined and observe the system response. If the desired item is added to the cart successfully, the system passes the test.

Step 5: Defect Reporting:- If, unfortunately, the system fails to work as expected and there are issues, a defect report is created and sent to the development team. In this, you have to pen down the nature of the defect, at which stage it occurs, and how it impacts the final user experience. Suppose the Add to Cart button of the e-commerce application didn’t work; the defect report will include the Button that is Unresponsive as the main detail. The development team then gets back to fixing all issues, and once everything is sorted, they send the application again to the testing team.

Step 6: Regression Testing Starts:- After issues are fixed, you may conduct a regression testing (Regression testing thoroughly checks and ensures that new enhancements and features don’t negatively impact the software’s functionality and that it continues to operate without any errors )    strategy to ensure that the new changes or fixes have not adversely affected other features. This will test not only the Add to Cart button but also other options like View Cart or Remove from Cart functions to ensure everything is up to the mark.

 

Types of System testing :-

(1)      Functional Testing:- Also known as functional completeness testing. To ensure that the functionality of the product working as per the requirements defined or as per the user’s needs, within the capabilities of the system.

 Functionality testing is one of the most important things the quality assurance team performs to check if the software meets the set quality standards. It’s a form of black-box testing in which the tester doesn’t know the internal coding of the system but just focuses on input and output. Depending on the results—success or failure—they decide if the system is ready to be released to the end users.

(2)      Performance Testing:- Performance testing is all about checking the performance of a system in terms of stability, response, and scalability. The testing team simulates various real-world situations and examines how the software solution works when there’s huge traffic. If there are any gaps, they then fix it before delivering the product to the end users.

(3)      Security Testing:- Security testing is one of the most important testing types in which the testing team assesses the different security areas of the system. For instance, they conduct rigorous testing to reveal system vulnerabilities (weakness) that may result in data loss. It also helps you verify that only specific personnel can access the system’s security functions, ensuring a good reputation among customers.

(4)      Recovery Testing:- Software systems often experience crashes and gaps, but their ability to bounce back from failure matters most. This is where recovery testing comes in. It verifies that the system is capable of recovering from failures quickly. It also involves running tests on the system’s backup functionality to ensure data is not lost during crashes.

(5)      Compatibility Testing:- The compatibility testing technique evaluates the software or system’s compatibility issues with other systems and hardware setups. Testers also check how the software performs on different browsers to ensure smooth and consistent performance across all platforms.

(6)      Regression Testing:- As technology advances, adding new features to existing systems and software becomes mandatory. Regression testing thoroughly checks and ensures that new enhancements and features don’t negatively impact the software’s functionality and that it continues to operate without any errors.

(7)      Load Testing:- In this type of software testing, your team is responsible for checking how the system performs under normal and high loads. It’s usually implemented before the completion of the software development process and ensures the application can easily withstand high traffic without any issues.

(8)      Migration Testing:- Migration testing done to ensure that the software moved from old system infrastructures to current system infrastructures without any issues.


Advantages of System Testing:-

i.        It covers end to end testing.

ii.      Proper Testing help in easing after production goes live issues and bugs.

iii.    System tests run naturally so that testing is done as the application developer.

iv.    Business requirements and software architecture are tested.

v.      The application tested thoroughly after each iteration and run. Hence, there are lesser probabilities of failure and risks later on.

vi.    System tests help to test that the application working correctly from a user.

vii.  System tests help specify how the application should behave.

 

Disadvantages of System Testing:-

i.        System Testing is time consuming process than another testing techniques since it checks the entire product or software.

ii.      The cost for the testing will be high since it covers the testing of entire software.

iii.    It needs good debugging tool otherwise the hidden errors will not be found.

iv.    Can be time-consuming and expensive.

v.      Requires adequate resources and infrastructure.

vi.    Can be complex and challenging, especially for large and complex systems.

vii.  Dependent on the quality of requirements and design documents.

viii.Requires specialized skills and expertise

 

Tools used for System Testing:-

1. Selenium:- Used for automated system testing of web applications. It supports multiple browsers like Chrome, Firefox, and Edge.

2. TestComplete:- A commercial automation tool used for system testing of desktop, web, and mobile applications.

3. HP Unified Functional Testing (UFT):- Used for automated functional and regression system testing.

4. IBM Rational Functional Tester:- Used for automated system testing of web and desktop applications.

5. Katalon Studio:- Used for system testing of web, API, desktop, and mobile applications.

6. Cucumber:- Used for behavior-driven development (BDD) and system-level functional testing.

7. Appium:- Used for system testing of Android and iOS mobile applications.

  8. SoapUI:- Used for system testing of web services and APIs.

9. LoadRunner:- Used for performance and load testing at the system level.

10. JMeter:- Used for system performance and load testing.

 

(4)        ACCEPTANCE TESTING:- Acceptance testing is a crucial step in the software development process, where the system is tested to ensure it meets requirements and is ready for deployment. Acceptance testing involves end users or clients testing the software in a real-world environment to validate its functionality, usability, and reliability. This phase serves as the final verification step before the software is released to production, preventing critical issues from arising.

Purpose of Acceptance Testing:-

i.        Validates user and business needs to ensure satisfaction.

ii.      Reduces post-launch risks by catching issues before release.

iii.    Acts as a final verification before deployment.

iv.    Identifies requirement gaps between developers and users.

 

Types of acceptance testing:-

(1)        User Acceptance Tests (UAT) :- User acceptance testing is conducted by the end users to verify that the software meets their needs and requirements. This type of testing focuses on the functionality and usability of the software in real-world scenarios.

(2)        Business Acceptance Testing (BAT):- BAT is a part of a software program that focuses on validating whether a software program meets the specified business necessities and is ready for deployment or not. It is done in the final phase within the testing methods, earlier than the software program is released to the customers or clients. BAT guarantees that the software aligns with the enterprise's desires, approaches, and expectancies, supplying self-assurance to stakeholders that the system is suited for its intended purpose.

(3)        Contract Acceptance Testing (CAT):- This is the last checkpoint that software solutions must be thoroughly tested against requirements set by the customer’s requirements stated in a contractual agreement. CAT works as an intermediary in that the delivered software fits the requirements set. During this complex procedure, careful checking of software’s functions, performance, reliability, and contractual responsibilities is essential. The company will determine using their structured and systematic way all that is needed so that the programmer can understand well all that is entailed when he or she develops this software program.

(4)        Regulations Acceptance Testing (RAT):- RAT is termed a very crucial phase in the software testing process. This type of testing is especially important in highly regulated sectors such as healthcare, finance, and aerospace. RAT makes sure that a product follows the rules and regulations, which are set up by the government of the country where it's released.

(5)        Operational Acceptance Testing (OAT):- Operational Acceptance Testing mainly focuses on the operational readiness of the software and to become part of the production environment. Operational Acceptance Testing is also known as Operational Readiness Testing (ORT) or Operations Readiness and Assurance Testing (ORAT).

(6)        Alpha Testing:- It aims to identify and fix bugs in a controlled environment that simulates real-world conditions. This helps ensure the software's functionality , reliability , and stability . Alpha testing combines white-box and black-box testing techniques to explore and evaluate the software.

(7)        Beta Testing:- Beta testing is the process of testing a software product or service in a real-world environment before its official release. It is an essential step in the software development lifecycle as it helps identify bugs and errors that may have been missed during the development process. During beta testing, the software is made available to a selected group of users who are willing to test the product and provide feedback to the developers.

 

Names of Acceptance Testing Tools:-

1. Selenium:- A company tests its online shopping website. Selenium automatically checks whether the login, add-to-cart, and payment features work correctly before final approval by users.

2. Cucumber:- In a banking project, requirements are written in simple English like: “Given the user enters correct ATM PIN, When they request balance, Then the system shows account balance.” Cucumber converts these statements into automated acceptance tests.

3. TestComplete:- A hospital management system is tested to ensure patient registration and billing modules work correctly before delivery to hospital staff.

4. FitNesse:- A team writes acceptance test cases in a wiki format for a payroll system to verify salary calculations before client approval.

5. Robot Framework:- A school management software is tested to confirm student attendance and report generation features work properly for final acceptance.

7. Jira + Zephyr:- A mobile app, users report bugs in Jira, and test cases are managed using Zephyr before final approval.


Advantages of Acceptance Testing:-

i.        It helps to get an idea about the future requirements from the clients while they share their feedback on how the software is behaving.

ii.      It allows automation of the acceptance test cases.

iii.    It brings faith, trust and confidence of the clients since they get the chance to actually use the software.

iv.    It is a black box testing technique and hence completely focussed on how the software is behaving.

Disadvantages of Acceptance Testing:-

i.        The testers verifying the software should have good knowledge on it.

ii.      Occasionally, the customers may not like being dragged to testing the software.

iii.    It is a time consuming process to get all the feedback from the customers. Moreover, they keep on changing from one person to another.

 

 

 (2)       NON-FUNCTIONAL TESTING:-

Non-functional testing plays an important role in the software testing process, focusing on the attributes of a software application that determine its readiness and suitability. It examines the system’s quality attributes, including performance, security, usability, and reliability.

It directly impacts the user’s experience and satisfaction with the software. For instance, how quickly does the application load? Can it handle many users simultaneously without crashing? Is it easy to use? How secure is it against cyber threats?

Non-functional testing is done from a totally different perspective than functional testing. These types of software testing services are a means of quality control, which is performed in software applications to ensure that everything works well and to know in what circumstances they might fail.

 

Objectives of non-functional testing:- Its main objective is the verification of a requirement that specifies criteria that can be used to judge the operation of a system (non-functional requirements) such as availability, accessibility, usability, maintainability, security, performance. Other objectives are:

·         Verify quality attributes which judge the operation of a system.

·         Determine system compliance under certain conditions of use.

·         Detect problems of product behavior by simulating real operating conditions.

 

 

Types of Non Functional Testing:-

(1)        Performance Testing:- Performance testing assesses the application’s performance under specific conditions. It focuses on various aspects such as response time, load time, and throughput rates under varying levels of user traffic.

(2)        Load Testing:- It is a subset of performance testing that examines how the application behaves under an expected load of users or transactions. The process identifies performance bottlenecks before the software goes live.

(3)        Stress Testing:- Stress testing pushes the software beyond its normal operational capacity, often to a breaking point, to see how it handles extreme conditions. This helps identify the application’s upper limits and how it fails under stress.

(4)        Security Testing:- Security testing is critical in identifying vulnerabilities (weakness), threats, and risks that could potentially lead to data loss, breaches, or other security incidents. It ensures that the software can protect data and maintain functionality as intended.

(5)        Usability Testing:- This focuses on the user’s ease of using the application, navigability, and overall user experience. Usability testing aims to ensure that the software is intuitive and user-friendly.

(6)        Compatibility Testing:- Compatibility testing checks the software’s performance across browsers, operating systems, network environments, and mobile devices to ensure consistent behavior and functionality.

(7)        Scalability Testing:- Evaluate the software’s ability to scale up or down in response to the application’s demands. Ensures the application can handle growth in data, processing capacity, or number of users.

 

(8)        Reliability Testing:- It verifies that the software can perform a specified task under certain conditions for a defined period without failure. It assesses the software’s reliability and fault tolerance.

 

NAME OF NON-FUNCTIONAL TESTING TOOLS:-

1. Apache JMeter:- Load and performance testing

2. LoadRunner:- Performance and stress testing

3. NeoLoad:- Load and scalability testing

4. Gatling:- High-performance load testing

5. WebLOAD:-Web application load testing

6. Burp Suite:- Security testing

7. Acunetix:- Security testing

8. Appium:-Compatibility and usability testing for mobile apps

9. GTmetrix:-Website speed testing

Advantages of Non-Functional Testing:-

·         Enhanced Security:- Ensures systems are protected against online threats, safeguarding data and user trust.

·         Improved Load Handling:- Guarantees the system’s ability to handle concurrent users without performance issues.

·         Increased Efficiency:- Optimizes the system to perform tasks quickly and effectively under various conditions.

·         Reusable Test Cases:- Test cases remain unchanged, eliminating the need to rewrite them repeatedly.

·         Reduced Time Commitment:- Requires less time compared to other testing procedures, streamlining the testing process.

 

Disadvantages of Non-functional Testing

·         Non-functional tests are performed repeatedly:- Whenever there is a change in the application, non-functional testing is performed again. Thus, it is more resource intensive.

·         Expensive in case of software update:- In case of software update, non-functional testing is performed again thus incurring extra charges to re-examine the software, and thus software becomes expensive.

 

TESTING LIFE CYCLE AND TESTING METHODOLOGIES:-

 

SOFTWARE TESTING LIFE CYCLE :- Software Testing Life Cycle (STLC) is a fundamental part of the Software Development Life Cycle (SDLC).

Software testing life cycle (STLC) is a sequence of verification and validation activities carried out in the course of software development to ensure that the software under test is functioning properly. It aligns with the requirements set out before the development team. During the lifecycle. The Software Testing Life Cycle (STLC) is a process that verifies whether the Software Quality meets the expectations or not. STLC is an important process that provides a simple approach to testing through the step-by-step process.

 

Phases of Software Testing Life Cycle (STLC) / Testing Methodologies are:-

The different phases of Software testing life cycle are:






(1)        Requirement Analysis:- Requirement Analysis is the first step involved in Software testing life cycle. In this step, Quality Assurance (QA) team understands the requirement in terms of what we will testing & figure out the testable requirements. During this phase, test team studies the requirements from a testing point of view to identify the testable requirements. The QA team may interact with various stakeholders such as client, business analyst, technical leads, system architects etc. to understand the requirements in detail.

 

(2)        Test Planning:-  Test Planning is the most important phase of Software testing life cycle where all testing strategy is defined. This phase is also called as Test Strategy phase. In this phase, the Test Manager is involved to determine the effort and cost estimates for the entire project. It defines the objective & scope of the project.

The commonly used Testing types are :- Unit Test, API Testing, Integration Test, System Test, Install/Uninstall Testing, Agile Testing

 

(3)        Test Case Development:- The Test case development begins once the test planning phase is completed. This is the phase of STLC where testing team notes the detailed test cases. Along with test cases, testing team also prepares the test data for testing.

A good test case is the one which is effective at finding defects and also covers most of the scenarios on the system under test. Here is the step by step guide on how to develop a good test case :-

·         Test cases need to be simple and transparent

·         Create test case with end user in mind

·         Avoid test case repetition

·         Do not assume functionality and features of your software application

·         Ensure 100% coverage of software requirements

·         Name the test case id such that they are identified easily while tracking defects

·         Implement testing techniques

·         The test case you create must return the Test Environment to the pre-test state

·         The test case should generate the same results every time

·         Your peers should be able to uncover defects in your test case design




(4)        Environment Setup:- Setting up the test environment is vital part of the Software Testing Life Cycle. A testing environment is a setup of software and hardware for the testing teams to execute test cases. It supports test execution with hardware, software and network configured.

 

The test environment involves setting up of distinct areas like :

·         Setup of Test Server – Every test may not be executed on a local machine. It may need establishing a test server, which can support applications.

·         Network – We need to set up the network as per requirements.

·         Test PC Setup – We need to set up different browsers for different testers.

·         Bug Reporting – Bug reporting tools should be provided to testers.

·         Creating Test Data for the Test Environment – Many companies use a separate test environment to test the software product. The common approach used is to copy production data to test.

 

(5)        Test Execution: Test execution is the process of executing the code and comparing the expected and actual results. When test execution begins, the test analysts start executing the test scripts based on test strategy allowed in the project.

Activities of Test Execution:-

·         Mark status of test cases like Passed, Failed, Blocked, Not Run etc.

·         Assign Bug Id for all failed and blocked test cases.

·         Do Retesting once the defects are fixed.

·         Track the defects to closure.

 

(6)        Test Cycle Closure:- It involves calling out the testing team member meeting & evaluating cycle completion criteria based on Test coverage, Quality, Cost, Time, Critical Business Objectives, and Software.

A test closure report by the test lead is published after accomplishing the exit criteria and finishing the testing phase. It follows a standard format such as :-

·         Test Summary Report

·         Identifier

·         Test Summary

·         Variances

·         Comprehensiveness Assessment

·         Summary of Results

·         Evaluation

·         Summary of Activities

·         Approval

 

Advantages of STLC:-

(1)        Adopting shift-left testing:- This allows teams to start testing earlier in the development cycle, enabling them to proactively identify and resolve potential issues.

(2)        Improved tracking:- By implementing a structured framework with clear goals and phases, Quality Assurance teams can better monitor their progress and effectively address any discrepancies that may arise.

(3)        Faster bug detection:- Testing at earlier stages of software development helps identify and fix bugs more quickly, leading to faster resolution and smoother project progress.

DIFFERENCE BETWEEN SDLC AND STLC

Parameter

SDLC

STLC

Origin

Software Development Life Cycle

Software Testing Life Cycle

Definition

SDLC focuses on delivering a high-quality system that meets or exceeds user expectations, operates effectively within current and planned IT infrastructure, and is cost-efficient to maintain.

STLC defines the sequence of testing activities, specifying what tests to perform and when, to ensure thorough validation. While testing processes vary by organization, a structured test life cycle exists.

Focus

Covers both development and testing processes

Focuses solely on the testing process

Performed

SDLC phases complete before the start of STLC phases

STLC phases are executed after the SDLC phases

Objective

To successfully overcome challenges in software development and deliver a functional product

To identify defects or weaknesses in the software

Relationship with Other Life Cycle

Precedes STLC

Follows SDLC

Team Involved

Project Managers, Business Analysts, Designers, Developers

Quality Assurance and Testing Teams

Prime goal

Deliver a reliable, fully functional software product

Verify that the software meets requirements and functions correctly

Distinct phases

Requirements gathering, design, development, testing, deployment, and maintenance

Test planning, test design, test execution, defect tracking, and test closure

Coverage

Encompasses the entire software development lifecycle, from initiation to deployment

Encompasses the complete testing process, from planning through closure

Core Relationship

SDLC is followed by STLC to validate and verify the software product

STLC is an integral part of SDLC, ensuring thorough testing before deployment

Outcome

Delivery of a high-quality software product that meets business needs

Delivery of software with minimized bugs and verified quality


UNIT 1 THE END  (INTRODUCTION TO SOFTWARE TESTING)



No comments:

Post a Comment

PLEASE DO LEAVE YOUR COMMENTS

UNIT 5 SOFTWARE TESTING (UNIT NAME) :- TEST AUTOMATION TOOLS AND EMERGING TRENDS

  DR. AJAY KUMAR PATHAK  ASSISTANT PROFESSOR READ  ALL THE NOTES CHAPTER WISE   MINOR PAPER   SUBJECT NAME:-   MN–2C (Th):- SOFTWARE TESTING...